﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Api
{
    /// <summary>
    /// Represents common configuration options.
    ///
    /// This configuration is used by high-level recognition classes.
    ///
    /// @see SpeechAligner
    /// @see LiveSpeechRecognizer
    /// @see StreamSpeechRecognizer
    /// </summary>
    public class Configuration
    {
        private String acousticModelPath;
        private String dictionaryPath;
        private String languageModelPath;

        public String LanguageModelPath
        {
            get { return languageModelPath; }
            set { languageModelPath = value; }
        }

        private String grammarPath;
        private String grammarName;

        private int sampleRate = 16000;

        public int SampleRate
        {
            get { return sampleRate; }
            set { sampleRate = value; }
        }
        private Boolean useGrammar = false;

        /**
        /// Returns path to acoustic model.
         */
        public String getAcousticModelPath()
        {
            return acousticModelPath;
        }

        /**
        /// Sets path to acoustic model.
         */
        public void setAcousticModelPath(String acousticModelPath)
        {
            this.acousticModelPath = acousticModelPath;
        }

        /**
        /// Returns path to dictionary.
         */
        public String getDictionaryPath()
        {
            return dictionaryPath;
        }

        /**
        /// Sets path to dictionary.
         */
        public void setDictionaryPath(String dictionaryPath)
        {
            this.dictionaryPath = dictionaryPath;
        }

        /**
        /// Returns path to grammar resources.
         */
        public String getGrammarPath()
        {
            return grammarPath;
        }

        /**
        /// Sets path to grammar resources.
         */
        public void setGrammarPath(String grammarPath)
        {
            this.grammarPath = grammarPath;
        }

        /**
        /// Returns grammar name.
         */
        public String getGrammarName()
        {
            return grammarName;
        }

        /**
        /// Sets grammar name if fixed grammar is used.
         */
        public void setGrammarName(String grammarName)
        {
            this.grammarName = grammarName;
        }

        /**
        /// Returns whether fixed grammar should be used instead of language model.
         */
        public Boolean getUseGrammar()
        {
            return useGrammar;
        }

        /**
        /// Sets whether fixed grammar should be used instead of language model.
         */
        public void setUseGrammar(Boolean useGrammar)
        {
            this.useGrammar = useGrammar;
        }


    }
}
